# coding: utf-8
'''
describe：获取一个目录的大小
author：陈力川
date：2018-10-15
'''
import os

# 初始化文件大小
sumsize = 0
# 获取目录大小（重复调用会出现错误，sumsize会一直累加无法清空）
def dirsize(dir1):
    '''
    :param dir1: 想获取大小的目录的绝对路径
    :return: 目录大小，单位字节
    '''
    # 定义全局变量
    global sumsize
    # 获取指定目录的所有文件信息
    ldir = os.listdir(dir1)
    # 遍历所有文件，累加文件大小
    for f in ldir:
        # 判断是否是文件
        file = os.path.join(dir1,f)
        if os.path.isfile(file):
            size = os.path.getsize(file)
            sumsize += size
        if os.path.isdir(file):
            dirsize(file)
    return sumsize

# 获取目录大小（函数内部进行初始化sumsize后调用dirsize()，该函数可重复调用）
def getdirsize(dir1):
    '''
    :param dir1: 想获取大小的目录的绝对路径
    :return: 目录大小，单位字节
    该函数是为了初始化sumsize
    '''
    # 定义全局变量
    global sumsize
    # 初始化文件大小
    sumsize = 0
    s = dirsize(dir1)
    print(s)

# 测试函数
if __name__ == '__main__':
    getdirsize('D:\\csdn-python课件\\python基础（上）\\1.9 Python文件操作\\1.9python文件操作')
    getdirsize('D:\\csdn-python课件\\python基础（上）\\1.9 Python文件操作\\1.9python文件操作')
    getdirsize('D:\\PYTHON')
